"use strict";
/**
 * 游戏界面工具、选项卡、编辑器、对话框 等工具生成器
 */

(function(document) {
    window.Tools = {};
    // 选项卡按钮
    function modeBtn(conf) {
        this.sign = "Mode Single Button";  // 元素类型标识
        var that = this;
        this.init = function() {
            Env.page.context.beginPath();
            Env.page.context.fillStyle = conf.color;
            Env.page.context.font = "16px Sans-Serif";
            Env.page.context.textBaseline = "top";
            Env.page.context.fillText(conf.text, conf.x, conf.y);
            document.addEventListener("keydown", function(event) {
                if (Env.lock.selector) {
                    if (keyListener(event) == conf.key) {
                        Env.lock.selector = false;
                        that.desc();
                        Env.page.context.fillStyle = Config.interface.mainColor;
                        Env.page.context.fillText(conf.text, conf.x, conf.y);
                        conf.callback(event);
                    }
                }
            });
        };
        this.desc = function() {
            Env.page.context.beginPath();
            Env.page.context.fillStyle = Config.interface.bgcolor;  // 还原主题色
            Env.page.context.fillRect(conf.x, conf.y, 16 * conf.text.length, 20);  // 渲染画布
        }
    };
    window.Tools.modeBtn = modeBtn;

    // 主界面
    function mainInterface(canvas) {
        this.sign = "Main Interface";
        var that = this;
        this.init = function() {
            // 界面环境初始化
            Env.page.canvas = canvas;
            Env.page.canvas.width = Config.interface.width;
            Env.page.canvas.height = Config.interface.height;
            Env.page.canvas.innerText = Config.interface.errorLog;  // 浏览器不兼容提示
            Env.page.context = Env.page.canvas.getContext("2d");  // 创建 2d 环境
            Env.page.context.fillStyle = Config.interface.bgcolor;  // 设置主题色
            Env.page.context.fillRect(0, 0, Config.interface.width, Config.interface.height);  // 渲染画布
            Env.page.box = document.getElementById("main");
            Env.page.box.innerText = null;  // 制空容器
            Env.page.box.appendChild(Env.page.canvas);  // 将画布加入容器
        };
        this.desc = function() {
            clearBox();  // 清屏
            Env.page.canvas.remove();
        };
    };
    window.Tools.mainInterface = mainInterface;

    // 标题
    function mainTitle(conf) {
        this.sign = "Main Title";
        var that = this;
        this.init = function() {
            // 提示语和选项功能初始化
            Env.page.context.beginPath();
            Env.page.context.fillStyle = conf.color;
            Env.page.context.font = "20px Sans-Serif";
            Env.page.context.textBaseline = "top";
            Env.page.context.fillText(conf.text, conf.x, conf.y);
        };
        this.desc = function() {
            Env.page.context.beginPath();
            Env.page.context.fillStyle = Config.interface.bgcolor;  // 还原主题色
            Env.page.context.fillRect(conf.x, conf.y, 16 * conf.text.length, 24);  // 渲染画布
        };
    }
    window.Tools.mainTitle = mainTitle;

    // 游戏背景色
    function gameBackground(color) {
        this.sign = "Game Background";
        var that = this;
        this.init = function() {
            Env.page.context.beginPath();
            Env.page.context.fillStyle = color;  // 设置主题色
            Env.page.context.fillRect(0, 0, Config.interface.width, Config.interface.height);  // 渲染画布
        };
        this.desc = function() {
            Env.page.context.beginPath();
            Env.page.context.fillStyle = Config.interface.bgcolor;  // 设置主题色
            Env.page.context.fillRect(0, 0, Config.interface.width, Config.interface.height);  // 渲染画布
        };
    }
    window.Tools.gameBackground = gameBackground;
})(document);